package com.lib.common.helper.sharehelper.entity

import android.graphics.Bitmap
import android.net.Uri
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize

/**
 * 分享数据包装实体类
 *
 * @author keanbin
 */
@Parcelize
data class ShareData(

    /**
     * 分享数据类型
     */
    var shareDataType: ShareDataType? = null,

    /**
     * 标题，如果是文本类型，就是要发送的文本
     */
    var title: String? = null,

    /**
     * 图片的uri
     */
    var imgUri: Uri? = null,

    /**
     * 图片到bitmap
     */
    var imgBmp: Bitmap?= null,

    /**
     * 网址，如果是音乐分享，就是音乐的地址
     */
    var url: String? = null,

    /**
     * 描述
     */
    var description: String? = null

): Parcelable {

    companion object {

        /**
         * 创建 文本 分享数据
         */
        fun createTextShareData(text: String): ShareData {
            return ShareData(shareDataType = ShareDataType.TEXT, title = text)
        }

        /**
         * 创建 图片 分享数据
         */
        fun createImgShareData(imgUri: Uri): ShareData {
            return ShareData(shareDataType = ShareDataType.IMAGE, imgUri = imgUri)
        }

        /**
         * 创建 音乐 分享数据
         */
        fun createMusicShareData(title: String, description:String, imgUri:Uri, url: String): ShareData {
            return ShareData(
                    shareDataType = ShareDataType.MUSIC,
                    title = title,
                    description = description,
                    imgUri = imgUri,
                    url = url
            )
        }

        /**
         * 创建 视频 分享数据
         */
        fun createVideoShareData(title: String, description:String, imgUri:Uri, url: String): ShareData {
            return ShareData(
                    shareDataType = ShareDataType.VIDEO,
                    title = title,
                    description = description,
                    imgUri = imgUri,
                    url = url
            )
        }

        /**
         * 创建 网页 分享数据
         */
        fun createWebPageShareData(title: String?, description:String?, imgUri:Uri?, url: String?): ShareData {
            return ShareData(
                    shareDataType = ShareDataType.WEBPAGE,
                    title = title,
                    description = description,
                    imgUri = imgUri,
                    url = url
            )
        }
    }

    /**
     *   分享的数据类型
     */
    enum class ShareDataType(value: Int) {

        /**
         * 文本类型
         */
        TEXT(1),

        /**
         * 图片类型
         */
        IMAGE(2),

        /**
         * 音乐类型
         */
        MUSIC(3),

        /**
         * 视频类型
         */
        VIDEO(4),

        /**
         * 网页类型
         */
        WEBPAGE(5),
    }
}